package com.bugbuff.dubbo.server.api;

import com.bugbuff.dubbo.server.enums.HtTotals;
import com.bugbuff.dubbo.server.pojo.Message;
import com.bugbuff.dubbo.server.pojo.Publish;
import com.bugbuff.dubbo.server.vo.PageInfo;

import java.util.List;

public interface MessageApi {


    /**
     * 消息拒绝
     * @param publishId
     * @return
     */
    String rejectMessage(Long userId,String publishId);

    /**
     * 消息通过
     * @param userId
     * @param publishId
     * @return
     */
    String passMessage(Long userId, String publishId);

    /**
     * 消息待审核，提供给外界的方法，视频或动态一开始发布时就会被标记为待审核
     * @param userId
     * @param publishId
     * @return
     */
    String checkMessage(Long userId, String publishId);

    /**
     * 消息置顶
     * @param userId
     * @param messageId
     * @return
     */
    String top(Long userId, String messageId);

    /**
     * 消息取消置顶
     * @param userId
     * @param messageId
     * @return
     */
    String unTop(Long userId, String messageId);

    /**
     * 根据消息id查询消息
     * @param messageId
     * @return
     */
    Message getMessageByMessage(String messageId);

    /**
     * 消息撤销
     * @param userId
     * @param publishId
     * @return
     */
    String revocationMessage(Long userId, String publishId);

    /**
     * 消息翻页
     * @param page
     * @param pagesize
     * @param sortProp
     * @param sortOrder
     * @param id
     * @param sd
     * @param ed
     * @param uid
     * @param state
     * @return
     */
    List<Message> getMessagePage(Integer page, Integer pagesize, String sortProp, String sortOrder, String id, Long sd, Long ed, Long uid, Integer state);

    /**
     * 根据信息状态查询信息表中所有的信息的状态数
     * @return
     */
    public Integer queryAllState(HtTotals htTotals);

    /**
     * 根据用户id查询信息
     * @param uid
     * @param page
     * @param pagesize
     * @param sortProp
     * @param sortOrder
     * @return
     */
    List<Message> findPublishByUid(Long uid, Integer page, Integer pagesize, String sortProp, String sortOrder);

    List<Message> findTop(Long uid);

    /**
     * 根据用户id查询信息数
     * @param uid
     * @return
     */

    public Long countPublishByUid(Long uid);


    /**
     * 根据发布id查询消息
     * @param publishId
     * @return
     */
    public Message getMessageByPublishId(String publishId);

    /**
     * 保存消息
     * @param publish
     * @return
     */
    public String saveMessage(Publish publish);

}
